1. Field Of The Invention
This invention relates to electronic storage systems utilizing flash EEPROM memory and, more particularly, to methods and apparatus for managing files in flash EEPROM systems.
2. History Of The Prior Art
Recently, flash EEPROM storage devices have been used to provide a new form of memory array. A flash EEPROM memory array is constructed of a large plurality of floating-gate metal-oxide-silicon field effect transistor devices arranged as memory cells in typical row and column fashion with circuitry for accessing individual cells and placing the memory transistors of those cells in different memory conditions. Such memory transistors may be programmed by storing a charge on the floating gate. This charge remains when power is removed from the array. This charge (typically called a "zero" or programmed condition) or its absence (a "one" or erased condition) may be detected when the device is read.
These flash memory arrays may be designed to accomplish many of the operations previously accomplished by other forms of memory in digital systems and especially in computer and control systems. For example, flash memory is being used to replace various read-only memories such as the basic input/output startup (BIOS) memory of a computer system. The ability to program flash memory in place offers substantial advantages for BIOS and similar read only memories over more conventional EPROM memory. Because of this ability, its great insensibility to mechanical shock, and its very high reliability, flash memory is also being used in embedded systems to store data generated by operations of associated systems. More recently, flash memory has been used to provide a smaller lighter functional equivalent of an electro-mechanical hard disk drive. Flash memory is useful for this purpose because it may be read more rapidly and is not as sensitive to physical damage as an electro-mechanical hard disk drive. Flash drive memories are especially useful in portable devices where space is at a premium and weight is extremely important.
In general, a flash EEPROM memory array is divided into blocks which are connected so that each entire block of memory cells are erased simultaneously. An erasure places all of the memory cells in the block into the erased or one condition. Thereafter, a memory cell may be individually programmed to store data. Since all of the memory transistors of a block of the array are joined so that they are erased together, a cell in a programmed condition cannot be switched to the erased state until the entire block of the array is erased. Thus, out-of-date information cannot be erased without erasing all of the valid information that remains in the block along with the invalid information. The result of this is that, unlike other memories in which changed data is written (essentially instantaneously) directly in place of the data it replaces, a flash EEPROM memory array requires a time consuming erasure process before it may be rewritten. Consequently, when the information at a data entry changes in flash memory used to store changing information, the new information is written to a new memory area rather than written over the old data; and the old data is marked as invalid. Then, after a block has filled and a sufficient portion of that block has been marked invalid, all valid information remaining in the block is written to a clean memory area; and the entire block is erased, typically using a background process.
It will be understood by those skilled in the art that the use of these complicated processes by which data is written to and erased from a flash memory array means that data once stored in the array at a particular physical position is very likely to move to other physical positions, either as the data is changed or as the erasure process is implemented. Since data in memory is only useful if it may be retrieved and utilized, it is very important that a flash memory management system be provided for tracking the data stored in any flash memory array which stores changing data.
There have been a number of flash memory management systems designed to work with different flash EEPROM memory arrays which handle changing data. However, those memory management systems known to the prior art typically attempt to implement all of the functions of an electro-mechanical hard disk drive which such a flash drive typically emulates. This tends to eliminate the use of flash EEPROM arrays in small embedded systems. Embedded systems which utilize flash memory arrays typically are portable and utilize a microprocessor or controller to run a limited number of processes which monitor conditions of the system and possibly vary the system operation in response to the monitoring. Embedded systems typically provide limited storage for either data or processes. On the other hand, such systems do not require all of the features of a comprehensive memory management system. Because of the limited storage available, a typical prior art flash memory management system would waste storage assets and place significant overhead requirements if used with most embedded systems.
For this reason, it is desirable to provide a new flash memory management system for an embedded system using a flash EEPROM array to store changing data which file system requires significantly less storage for its overhead data and processes while accurately tracking the position of the data stored by such a system.